Many computer performance monitoring tools have been developed in the prior art for the purpose of evaluating the performance of computer systems. They have been conceived with various goals in mind. Some of these tools are software, some hardware. The hardware tools are separate from the system they measure, and they are connected to the system by manually-inserted probes or by a plug interface provided for monitoring.
All prior known monitors can basically be divided into two general types: counters and recorders. The counter type counts the number of occurrences of each of a plurality of events, and the counted output usually represents some kind of meaningful information. The recorder type collects data about defined events on recording media. Later analysis of both types is usually needed to make the data meaningful. Early IBM counter type of monitors usually monitored and simultaneously counted specified states in a processor, which were:
1. Total operation time, PA0 2. Channel A operation time, PA0 3. Channel B operation time, PA0 4. CPU operation time, no I/O in process, PA0 5. Tape equipment operation time, CPU in wait state, PA0 6. Card equipment operation time, CPU in wait state.
Software monitors universally have the problem of distorting the operations of the system they are measuring, because software monitors compete with the program being measured for hardware resources in the system.
Monitoring functions may also be separated into two classes: those that sense hook instructions put into a program to assist a monitoring operation, and those that sense some characteristic of a program provided to perform the program function. Non-operable instructions have been inserted as hooks to cause a program interrupt that senses and records a characteristic existing at the time of the offending hook instruction. The monitor call (MC) instruction in the IBM System/370 architecture is provided as on operable instruction for use as a controllable hook in program code. For example, a hook may be put into a programming routine, so that the number of times such hook instruction executes can be counted to determine the number of times that the routine or queue is entered by another program(s). Hardware monitors have been used to sense and count the occurrence of a hook instruction. Monitor functions which have been used to sense non-hook program characteristics, for example, have counted the occurrence of specified instruction operations codes, and plotted the address distribution of accesses to main storage.
Background on monitors and their use is described in a book entitled "Evaluation and Measurement Techniques For Digital Computer Systems" by M. E. Drummond, Jr. published in 1973 by Prentice-Hall, Inc., Englewood Cliffs, N.J.
Examples of patents on data processing system hardware monitors externally connected to a system being monitored are represented by U.S. Pat. No. 3,399,298 to H. M. Taylor entitled "Data Processor Profitability Monitoring Apparatus"; U.S. Pat. No. 3,588,837 to R. D. Rash et al entitled "System Activity Monitor" and U.S. Pat. No. 4,068,304 to W. F. Beausoleil et al entitled "Storage Hierarchy Performance Monitor".
Hardware monitors are being commercially sold, such as the Comten 8028 monitor and the Tesdata monitors.
Another type of monitor is described and claimed in U.S. Pat. No. 4,435,759, filed June 15, 1981 by R. I. Baum et al and assigned to the same assignee as the present invention. It describes a hardware monitor with a software correlation characteristic. It is externally connected to a uniprocessor or multiprocessor system to collect selected hardware events in the system. It relates the collected hardware events to causative software by simultaneously capturing and recording the address of a potentially causative software instruction at the time the hardware events are being sampled for collection. Sampling is done on every nth occurrence of a predetermined hardware event to capture the causative instruction address and the state of one or more other hardware events in the system which may be correlated with the captured instruction address. Hence, the captured instruction addresses relate the simultaneously collected events to the software causing them.
Application Ser. No. 273,530 also discloses a plurality of external monitors respectively connected to plural CPUs in a MP with interconnections between the monitors, and all monitors being connected to an external control processor. The control processor issues read commands to the monitors to synchronize their capturing, and outputting of events in the CPUs being monitored. The control processor in this manner collects the captured events in groups by receiving and recording each group as the set of outputted events resulting from each read command.